/*
 * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
 * under one or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information regarding copyright
 * ownership. Camunda licenses this file to you under the Apache License,
 * Version 2.0; you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict';

module.exports = [
  function() {
    var ViewPillsController = [
      '$scope',
      'Views',
      '$location',
      'routeUtil',
      function($scope, Views, $location, routeUtil) {
        var providers = Views.getProviders({component: $scope.id});
        $scope.providers = providers;

        var isActive = ($scope.isActive = function(provider) {
          return $location.path().indexOf('/' + provider.id) != -1;
        });

        $scope.getUrl = function(provider) {
          var replacement = provider.id,
            currentPath = $location.path(),
            currentSearch = $location.search(),
            keepSearchParams = !isActive(provider)
              ? provider.keepSearchParams
              : true;

          return (
            '#' +
            routeUtil.replaceLastPathFragment(
              replacement,
              currentPath,
              currentSearch,
              keepSearchParams
            )
          );
        };
      }
    ];

    return {
      restrict: 'EAC',
      scope: {
        id: '@'
      },
      template:
        '<ul class="nav nav-pills">' +
        '  <li ng-repeat="provider in providers" ng-class="{ active: isActive(provider) }" class="{{ provider.id }}">' +
        '    <a ng-href="{{ getUrl(provider) }}">{{ provider.label }}</a>' +
        '  </li>' +
        '</ul>',
      replace: true,
      controller: ViewPillsController
    };
  }
];
